package proyecto.web;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import proyecto.excepcion.DAOExcepcion;
import proyecto.modelo.Paciente;
import proyecto.service.PacienteService;

public class PacienteController extends MultiActionController {

    private PacienteService pacienteService;

    public PacienteService getPacienteService() {
        return pacienteService;
    }

    public void setPacienteService(PacienteService pacienteService) {
        this.pacienteService = pacienteService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/categorias_mantener");
        //        cambiar a la pagina real
    }

    public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) {
        String dni = request.getParameter("dni");
        try {
            Collection<Paciente> paciente = pacienteService.buscarPorDni(dni);
            System.out.println(paciente);
            request.setAttribute("paciente", paciente);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/admin/categorias_mantener");
//        cambiar a la pagina real
    }

    public ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/categorias_nuevo");
        //        cambiar a la pagina real
    }

    public ModelAndView insertar(HttpServletRequest request, HttpServletResponse response) {
        Paciente vo = new Paciente();
        vo.setDni(request.getParameter("dni"));
        vo.setNombres(request.getParameter("nombres"));
        vo.setApellidos(request.getParameter("apellidos"));
        vo.setSexo(request.getParameter("sexo")); //modificar para leer del combo list
        // conversion de String a Date
        String fecha = request.getParameter("nacimiento");
        DateFormat myDateFormat = new SimpleDateFormat (fecha);
        Date myDate = null;
         try {
              myDate = myDateFormat.parse(fecha);
         } catch (Exception e) {
              System.out.println("Invalid Date Parser Exception ");
              e.printStackTrace();
         }
        vo.setFechaNac(myDate); // Convertido
        vo.setDireccion(request.getParameter("direccion"));
        vo.setTelefono(request.getParameter("telefono"));
        vo.setMail(request.getParameter("mail"));
        vo.setContrasena(request.getParameter("clave"));
        try {
            pacienteService.insertar(vo);
        } catch (DAOExcepcion e) {
            System.err.println(e.toString());
        }
        return new ModelAndView("redirect:/categorias_mantener.htm");// cambiar a la pagina real
    }

//    public ModelAndView eliminar(HttpServletRequest request, HttpServletResponse response) {
//        String idCategoria = request.getParameter("idCategoria");
//        try {
//            categoriaService.eliminar(Integer.parseInt(idCategoria));
//        } catch (DAOExcepcion ex) {
//            System.err.println(ex.toString());
//        }
//        return new ModelAndView("redirect:/categorias_mantener.htm");
//    }

    public ModelAndView obtener(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("codigoPaciente"));
        Paciente vo;
        try {
            vo = pacienteService.obtener(id);
            request.setAttribute("Paciente", vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("/admin/categorias_editar"); // cambiar a la pagina real
    }

    public ModelAndView actualizar(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("codigoPaciente"));
        Paciente vo = new Paciente();
        vo.setCodigoPaciente(id);
        vo.setDni(request.getParameter("dni"));
        vo.setNombres(request.getParameter("nombres"));
        vo.setApellidos(request.getParameter("apellidos"));
        vo.setSexo(request.getParameter("sexo")); //modificar para leer del combo list
        // conversion de String a Date
        String fecha = request.getParameter("nacimiento");
        DateFormat myDateFormat = new SimpleDateFormat (fecha);
        Date myDate = null;
         try {
              myDate = myDateFormat.parse(fecha);
         } catch (Exception e) {
              System.out.println("Invalid Date Parser Exception ");
              e.printStackTrace();
         }
        vo.setFechaNac(myDate); // Convertido
        vo.setDireccion(request.getParameter("direccion"));
        vo.setTelefono(request.getParameter("telefono"));
        vo.setMail(request.getParameter("mail"));
        vo.setContrasena(request.getParameter("clave"));
        
        try {
            pacienteService.actualizar(vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("redirect:/categorias_mantener.htm");// cambiar a la pagina real
    }
}
